diff --git a/Makefile.am b/Makefile.am
new file mode 100644
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,16 @@
+SUBDIRS = xerbla
+
+EXTRA_DIST = README.txt
+
+# Octave doesn't find UFconfig.h if it's placed in a non-default search path.
+# Don't put it in a subdirectory for now.  Update ufconfig.pc.in if this changes.
+#pkgincludedir = $(includedir)/ufconfig
+pkgincludedir = $(includedir)
+pkginclude_HEADERS = UFconfig.h
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = ufconfig.pc
+
+lib_LTLIBRARIES = libufconfig.la
+libufconfig_la_SOURCES = UFconfig.c
+libufconfig_la_LDFLAGS = -no-undefined -version-info 9:1:6
diff --git a/configure.ac b/configure.ac
new file mode 100644
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,22 @@
+AC_PREREQ([2.68])
+AC_INIT([UFconfig],[3.6.1],[davis@cise.ufl.edu])
+AC_CONFIG_SRCDIR([UFconfig.c])
+AC_CONFIG_HEADER([config.h])
+AM_INIT_AUTOMAKE([foreign])
+LT_INIT
+
+AC_PROG_INSTALL
+AC_PROG_CC
+AC_PROG_F77
+
+AC_CHECK_HEADERS([limits.h stdlib.h])
+
+AC_TYPE_SIZE_T
+
+AC_FUNC_MALLOC
+
+AC_CONFIG_FILES([
+	ufconfig.pc
+	Makefile
+	xerbla/Makefile])
+AC_OUTPUT
diff --git a/ufconfig.pc.in b/ufconfig.pc.in
new file mode 100644
--- /dev/null
+++ b/ufconfig.pc.in
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: @PACKAGE_NAME@
+Description: SuiteSparse common library
+Version: @PACKAGE_VERSION@
+Libs: -L${libdir} -lufconfig
+Cflags: -I${includedir}
diff --git a/xerbla/Makefile.am b/xerbla/Makefile.am
new file mode 100644
--- /dev/null
+++ b/xerbla/Makefile.am
@@ -0,0 +1,7 @@
+noinst_HEADERS = xerbla.h
+noinst_LTLIBRARIES = libxerbla.la libcerbla.la
+
+libxerbla_la_SOURCES = xerbla.f
+libxerbla_la_FFLAGS = $(AM_FFLAGS)
+libcerbla_la_SOURCES = xerbla.c
+libcerbla_la_CFLAGS = $(AM_CFLAGS)
